/* 
 * File:   JBuffer.h
 * Author: johnneyshi
 *
 * Created on 2013年2月20日, 下午3:25
 */

#ifndef JBUFFER_H
#define	JBUFFER_H
#include <string>
#include "JFile.h"
//只能一次性存完，然后再取完
class JBuffer {
public:
    void Put(const char* _buff,int size);
     /*
     * 参数：size,传入需要读取的大小
     * 返回值：bool，是否读取完毕；size，读取的大小
     */
    int Get(char* _buff,int size);
    JBuffer(std::string _bufferPath = ".");
    //JBuffer(const JBuffer& orig);
    virtual ~JBuffer();
    bool IsInUsed();
    void SetInUsed();
private:
    bool isInUsed;
    //1M
    const int buffSize;// = 1024 * 1024;
    char* buff;
    int usedBuffSize;
    int alreadyGetSize;
    int getCount;
    void Flush();
    void PutToFile(const char* _buff,int size);
    std::string bufferPath;
    JFile* pFile;
    //当buff用完之后，需要清理它的零时文件，仅仅是清除文件中的;对于char[]中的内容，采取的是覆盖写，记录了大小
    //不许要做处理
    void CleanFile();
    /*
     * 参数：size,传入需要读取的大小
     * 返回值：读取到的大小
     */
    int GetFromBuff(char* _buff,int size);
    int GetFromFile(char* _buff,int size);
};

#endif	/* JBUFFER_H */

